<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环</title>
    <script>
        /* 
            for循环
                for循环和while循环没有本质区别

                语法：
                    for(初始化表达式;条件表达式;更新表达式){
                        循环体
                    }
                  初始化表达式，在整个循环中只会循环一次。
                执行流程：
                    1.先执初始化表达式
                    2.执行条件表达式，如为true则执行循环体，false则不执行。
                    3.更新表达式对初始化变量进行修改，直至判断为false为止。
                    4.使用let在for循环中声明的变量是局部变量，只能在for循环内部访问。

                    创建死循环的方式
                        while(true){

                        }

                        for(;;){
                        
                        }
        */

        let i = 0;
        while (i < 3) {
            console.log(i)
            i++
        }

        for (i = 0; i < 3; i++) {
            console.log(i)
        }

        /* 练习1：求100以内所有3的倍数的数字，以及总数之和 */

        //  while循环
        let num = 1, count = 0, result = 0;
        while (num < 100) {
            if (num % 3 == 0) {
                console.log(num)
                result += num;
                count++
            }
            num++
        }
        console.log(`100以内3的倍数有${count}个`)
        console.log(`这些数的总和为${result}`)

        // do-while循环
        num = 1, count = 0, result = 0;
        do {
            if (num % 3 == 0) {
                console.log(num)
                result += num;
                count++
            }
            num++
        } while (num < 100)
        console.log(`100以内3的倍数有${count}个`)
        console.log(`这些数的总和为${result}`)

        // for循环
        count = 0
        result = 0
        for (num = 1; num < 100; num++) {
            if (num % 3 == 0) {
                console.log(num)
                result += num;
                count++
            }
        }
        console.log(`100以内3的倍数有${count}个`)
        console.log(`这些数的总和为${result}`)

        //
        count = 0, result = 0;
        for (i = 3; i < 100; i += 3) {
            console.log(i)
            result += i
            count++
        }
        console.log(`100以内3的倍数有${count}个`)
        console.log(`这些数的总和为${result}`)

        //  求1000以内的水仙花数
        //  水仙花数就是一个n位数(n>=3),如果它各个位上数字的n次幂之和还等于这个数，那么这个数是水仙花数。

        
        for (i = 100; i < 1000; i++) {
            let a, b, c;    
            a = parseInt(i / 100)
            b = (parseInt(i / 10)) % 10
            c = i % 10
            if (i == a ** 3 + b ** 3 + c ** 3) {
                console.log(i)
            }
        }
        
        for(i=100;i<1000;i++){
            let stri=i+''

            if(stri[0]**3+stri[1]**3+stri[2]**3==i){
             console.log(Number(i))
            }
        }
    </script>
</head>

<body>

</body>

</html>